如何使用闪电贷从 0 撬动百万美元?Value DeFi 协议闪电贷攻击简要分析
据慢雾区消息,2020 年 11 月 15 日,Value DeFi 的 Value DeFi MultiStables 保险库遭遇闪电贷攻击,慢雾安全团队于第一时间跟进并进行相关分析,以简要的形式呈现给大家,供大家参考。
背景提要
Value DeFi 协议是旨在为去中心化金融带来公平、真实价值,以及创新的平台与产品套件。他们遵循四个核心原则:增加获取流动性挖矿收益的机会;提供下一代链上投票以进行治理; 其旗下的 Value Vaults 允许用户存入一定量的链上资产后获取收益。
攻击流程简析
1. 攻击者首先从 Aave 中借出 80000 个 ETH,为攻击做准备;
2. 攻击者使用 80000 个 ETH 在 Uniswap WETH/DAI 池中用闪电贷借出大量的 DAI 和 在 Uniswap WETH/USDT 兑换出大量的 USDT;
3. 用户调用 ValueMultiVaultBank 合约 的 deposit 合约使用第 2 步中小部分的 DAI 进行充值,ValueMultiVaultBank 合约中一共有 3 种资产,分别是 3CRV、bCRV、和 cCRV。ValueMultiVaultBank 合约在铸币的时候会将合约中的 bCRV, cCRV 转换成以 3CRV 进行计价,转化的途径为 bCRV/cCRV -> USDC -> 3CRV。其中 USDC -> 3CRV 使用的是 DAI/USDC/USD 池中 USDC/3CRV 的价格。转换完成后,Value Defi 合约根据合约中总的 3CRV 的价值和攻击者充值的 DAI 数量计算 mVUSD 铸币的数量;
4. 攻击者在 Curve DAI/USDC/USDT 池先使用第二步中剩余的大部分 DAI 和 USDT 兑换 USDC,拉高 DAI/USDC/USDT 池中的 USDC/3CRV 的价格
5. 攻击者在 ValueMultiVaultBank 合约中发起 3CRV 提现,此时 ValueMultiVaultBank 合约和第 3 步一样,会先将合约中的 bCRV, cCRV 转换成以 3CRV 计价,由于在第 4 步中,USDC/3CRV 的价格已经被拉高,导致换算的过程中,ValueMultiVaultBank 合约中的 bCRV, cCRV 能换算成更多的 3CRV,也就是说使用同等份额的 mVUSD 可以换取更多的 3CRV;
6. 拿到 3CRV 后,攻击者到 Curve 的 DAI/USDC/USDT 池中使用 3CRV 换回 DAI,并在 Uniswap 中兑换回 ETH,然后归还 Aave 的闪电贷 。
总结
相关链接:
(1) 分析样本:
https://etherscan.io/tx/0x46a03488247425f845e444b9c10b52ba3c14927c687d38287c0faddc7471150a
往期回顾
慢雾导航
慢雾科技官网
https://www.slowmist.com/
慢雾区官网
https://slowmist.io/
慢雾 GitHub
https://github.com/slowmist
Telegram
https://t.me/slowmistteam
https://twitter.com/@slowmist_team
Medium
https://medium.com/@slowmist
币乎
https://bihu.com/people/586104
知识星球
https://t.zsxq.com/Q3zNvvF
火星号
http://t.cn/AiRkv4Gz
链闻号
https://www.chainnews.com/u/958260692213.htm